// 来自：https://www.cnblogs.com/stelayuri/p/19150301
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;

// 根号 n 向下取整
// 推荐二分，或根号函数用 long double 的 sqrtl
ll sqt(ll n) { return sqrtl(n); }

void solve() {
  ll C, D;
  cin >> C >> D;

  ll ans = 0;

  ll a = 1, b = 9, x = 10;
  // 假设位数 d 从 1 开始变大
  // 用 x 表示 10^d
  // [a, b] 表示位数为 d 时的最小最大值

  while (a <= C + D) // 低位最小值还没超过可行最大值 C+D 时
  {
    ll l = max(a, C + 1) + C * x; // 可行范围
    ll r = min(b, C + D) + C * x;

    if (l <= r)
      ans += sqt(r) - sqt(l - 1);

    a = a * 10; // 位数变大一位后 abx 的变化
    b = b * 10 + 9;
    x = x * 10;
  }
  cout << ans << "\n";
}

signed main() {
  ll t;
  cin >> t;
  while (t--)
    solve();
  return 0;
}